package com.amber.proyecto.envia.imagenes.sw;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.os.Vibrator;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.amber.proyecto.envia.imagenes.sw.camara.ObtieneImgCam;
import com.amber.proyecto.envia.imagenes.sw.mibd.BD;
import com.amber.proyecto.envia.imagenes.sw.usuario.InicioSesion;
import com.amber.proyecto.envia.imagenes.sw.usuario.PrincipalUsuario;
import com.amber.proyecto.envia.imagenes.sw.usuario.RegistroUsuario;
import com.amber.proyecto.envia.imagenes.sw.utils.Conexiones;
import com.amber.proyecto.envia.imagenes.sw.utils.ContenidoArray;
import com.amber.proyecto.envia.imagenes.sw.utils.Correo;
import com.amber.proyecto.envia.imagenes.sw.utils.EnviaArchivoHttp;
import com.amber.proyecto.envia.imagenes.sw.utils.EnviaImagenHttp;
import com.amber.proyecto.envia.imagenes.sw.utils.Imagen;
import com.amber.proyecto.envia.imagenes.sw.utils.Variables;

public class Principal extends Activity {
	private LocationManager locationManager;

	
	private Button btnTomarFoto;
	private Button btnEnviarImagen;
	private Button btnBuscar;
	private Button btnRegistrar;
	private Button btnConfigurar;
	private Button btnInicioSesion;
	

	private SoapObject request;
	private String HOST = Variables.HOST;
	private String URL = "http://"+HOST+"/pags/servicios.php";
	private boolean gps_on;
	private boolean wifi_on;
	private Location loc;
	private MediaPlayer mediaPlayerSonido;
	private boolean activado = false;
	private Bundle bundle;
	
	
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.principal);
		
		System.gc();
		
		if (Variables.estadoSeleccionado == null){
			BD bd = new BD(this);
			Variables.estadoSeleccionado = bd.obtieneEstado(20);
			bd.close();
		}
		bundle = getIntent().getExtras();
		/*
		if (!getIntent().hasExtra("correoUsuario")){
			TextView tvNombreUsuario = (TextView)findViewById(R.id.tvNombreUsuarioPrin);
			tvNombreUsuario.append("Invitado");
		}else{
			if (bundle.getString("correoUsuario").equals(Variables.correoInvitado) == true){
				TextView tvNombreUsuario = (TextView)findViewById(R.id.tvNombreUsuarioPrin);
				tvNombreUsuario.append("Invitado");
			}else{
				TextView tvNombreUsuario = (TextView)findViewById(R.id.tvNombreUsuarioPrin);
				tvNombreUsuario.append(bundle.getString("nombreUsuario"));
			}
		}
			*/
		
		btnTomarFoto =	(Button)findViewById(R.id.btnTomarFoto);
		
		
		btnEnviarImagen = (Button)findViewById(R.id.btnEnviaPrin);
		btnEnviarImagen.setOnClickListener(ivEnviaImagenesPres);
				
		
		btnBuscar = (Button)findViewById(R.id.btnBuscaPrin);
		btnBuscar.setOnClickListener(ivBuscaMapaPres);
		
		btnRegistrar = (Button)findViewById(R.id.btnRegistraUsu);
		btnRegistrar.setOnClickListener(ivRegistroPres);
		
		btnInicioSesion = (Button)findViewById(R.id.btnIniciaSesionPrin);
		btnInicioSesion.setOnClickListener(ivInicioSesionPres);
		
		btnEnviarImagen.setText("Enviar imagen ("+verificaCantidad()+")");
		
		Button btnConfig = (Button)findViewById(R.id.btnConfiguraPrin);
		btnConfig.setOnClickListener(btnConfigPres);
		
		

		utilizarGPS();

		if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
			mensaje("Advertencia", "Debe activar el GPS para obtener la posición de la imagen");
		}
		else {

			 //http://stackoverflow.com/questions/2021176/how-can-i-check-the-current-status-of-the-gps-receiver
			 locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
			 gps_on =  locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
			 //wifi_on = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
		     request_updates();
		     if (loc != null){
		    	 mostrar();
		     }

		}
	
	}
	
	private OnClickListener btnConfigPres = new OnClickListener() {

		public void onClick(View v) {
        	Intent intent = new Intent();
    		intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    		//intent.putExtra("correoUsuario", bundle.getString("correoUsuario"));
			intent.setClass(Principal.this,Configuracion.class);
			startActivity(intent);
			finish();
		}
	};
	
	private void verificaInternetBD(){
		if (Conexiones.conexionInternet(this) == true && Conexiones.respondeServidor(URL) == true ){
			BD bd = new BD(this);
			int tot = bd.cuentaRegImagenes();
			if (tot > 0){
				for (int i=0;i<tot;i++){
					enviaImagenBD();
				}
				Toast.makeText(this, "Servidor encontrado, enviando imágenes", Toast.LENGTH_LONG).show();
				btnEnviarImagen.setText("Enviar imagen ("+verificaCantidad()+")");
				ArrayList<Correo> correos = new ArrayList<Correo>();
				correos = bd.obtieneCorreos();
				if (correos.size() >0){
					for (int i=0; i<correos.size(); i++){
						Log.i("Correos", correos.get(i).getCorreoContacto());
						enviaCorreo(correos.get(i).getCorreoUsuario(), correos.get(i).getCorreoContacto(), correos.get(i).getNombreImagen());
					}
					bd.borraCorreos();
				}

				bd.close();
			}
			else{
				Toast.makeText(this, "No existen registros en la base de datos", Toast.LENGTH_LONG).show();
				bd.close();
			}
			

		}
		else{
			Toast.makeText(this, "Servidor no se encontró", Toast.LENGTH_LONG).show();
		}
		
	}
	private void request_updates() {
        if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
            // GPS is enabled on device so lets add a loopback for this locationmanager
            locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0, 0, locationListener);
            Log.i("Gps","encontrado GPS");
        }  
        /*
        if (locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
            // GPS is enabled on device so lets add a loopback for this locationmanager
            locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0, 0, locationListenerNetwork);
            Log.i("Network","Red encontrada");
        } 
        */  
    }

    LocationListener locationListener = new LocationListener() {
        public void onLocationChanged(Location location) {
            // Each time the location is changed we assign loc
            loc = location;
		     if (loc != null){
		    	 mostrar();
		     }
        }

         // Need these even if they do nothing. Can't remember why.
         public void onProviderDisabled(String arg0) {}
         public void onProviderEnabled(String provider) {}
         public void onStatusChanged(String provider, int status, Bundle extras) {}
    };
    
    LocationListener locationListenerNetwork = new LocationListener() {
        public void onLocationChanged(Location location) {
            locationManager.removeUpdates(this);
            loc = location;            
            if (loc != null){
            	 mostrar();
            }
        }
        public void onProviderDisabled(String provider) {}
        public void onProviderEnabled(String provider) {}
        public void onStatusChanged(String provider, int status, Bundle extras) {}
    };

    
	
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            this.finish();
        }
        return super.onKeyDown(keyCode, event);
    }
    
    private OnClickListener ivInicioSesionPres = new OnClickListener() {
		

		public void onClick(View v) {
			Intent intent = new Intent();
    		intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    		intent.putExtra("origen", Variables.INICIO);
    		if(getIntent().hasExtra("correoUsuario") && Variables.inicioSesion == true){
    			intent.putExtra("correoUsuario", bundle.getString("correoUsuario"));
    			intent.setClass(Principal.this, PrincipalUsuario.class);
    		}else{
    			intent.setClass(Principal.this, InicioSesion.class);
    		}
    		startActivity(intent);
    		finish();
		}
	};
    private OnClickListener ivBuscaMapaPres = new OnClickListener() {

		public void onClick(View v) {
			Intent intent = new Intent();
    		intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    		if(getIntent().hasExtra("correoUsuario")){
    			intent.putExtra("correoUsuario", bundle.getString("correoUsuario"));
    		}
			intent.setClass(Principal.this, Busca.class);
			startActivity(intent);
			//Principal.this.finish();
		}
	};
	
	private OnClickListener ivRegistroPres = new OnClickListener() {

		public void onClick(View v) {
			Intent intent = new Intent();
    		intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    		if(getIntent().hasExtra("correoUsuario")){
    			intent.putExtra("correoUsuario", bundle.getString("correoUsuario"));
    		}
    		intent.setClass(getApplicationContext(), RegistroUsuario.class);
    		startActivity(intent);
    		finish();
		}
	};

	private OnClickListener ivIniciarPres = new OnClickListener() {

		public void onClick(View v) {
			
			if (Conexiones.conexionInternet(Principal.this) == true && Conexiones.respondeServidor(URL) == true ){
				if(getIntent().hasExtra("correoUsuario")){
					if (bundle.getString("correoUsuario").equals(Variables.correoInvitado) == true){
						mensajeUsuarioInternet("¿Qué deseas realizar?", "Iniciar sesión para guardar las imágenes con tu usuario o invitado");
					}
					else{
						if (getIntent().hasExtra("inicioSesion")){
				        	Intent intent = new Intent();
				    		intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
				    		intent.putExtra("correoUsuario", bundle.getString("correoUsuario"));
							intent.setClass(Principal.this,ObtieneImgCam.class);
							startActivity(intent);
						}
					}
				}
				else{
					mensajeUsuarioInternet("¿Qué deseas realizar?", "Iniciar sesión para guardar las imágenes con tu usuario o invitado");
				}
			}else{
				if (Variables.correoSinInternet != null){
		       			Intent intent = new Intent();
			    		intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
						intent.setClass(Principal.this,ObtieneImgCam.class);
						intent.putExtra("correoUsuario", Variables.correoSinInternet);
						intent.putExtra("origen", Variables.INICIO_SESION);
						startActivity(intent);	
				}
				else{
					dialogoSinInternet(Principal.this);
					//mensajeUsuarioSinInternet("No hay conexión a Internet", "Captura tu correo electrónico o selecciona entrar como invitado");
				}
			}
			

		}
	};
	
	private OnClickListener ivEnviaImagenesPres = new OnClickListener() {

		public void onClick(View v) {
			if (verificaCantidad() == 0){
				Toast.makeText(Principal.this,"No hay imagenes en la base de datos", Toast.LENGTH_LONG).show();
			}
			else{
				if (Conexiones.conexionInternet(Principal.this) == true && Conexiones.respondeServidor(URL) == true ){
					mensajeEnviaArchivos("Aviso", "El proceso tarda en enviar las fotografías al servidor, asegúrate de que la memoria esté disponible. ¿Continuar?");
				}
				else{
					Toast.makeText(Principal.this,"No conexión a Internet", Toast.LENGTH_LONG).show();
				}
			}
		}
	};

	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.principal, menu);
		return true;
	}
	
	protected void onRestart() {
		super.onRestart();
		//Log.i("On restart", "restaurando");
		activado = false;
		btnTomarFoto = (Button)findViewById(R.id.btnTomarFoto);
       
		btnEnviarImagen.setText("Enviar imagen ("+verificaCantidad()+")");
		if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
			mensaje("Advertencia", "Debe activar el GPS para utilizar la aplicación");
		}
		

		locationManager = (LocationManager) this.getSystemService(LOCATION_SERVICE);
		locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0, 0, locationListener);
		//locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0, 0, locationListenerNetwork);
	
	}

	protected void onPause() {
		super.onPause();
		
	}
	
	private void utilizarGPS(){
		locationManager = (LocationManager)getSystemService(LOCATION_SERVICE);
		List<String> listaProviders = locationManager.getAllProviders();
		//Log.i("Prov", listaProviders.get(0).toString());
	}
	private void activarGPS(){
	       Intent settingsIntent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
	       settingsIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
	       startActivity(settingsIntent);		
	}
	
	private void mostrar(){
		btnTomarFoto.setVisibility(1);
		if (Variables.tamResolucion == null){
			btnTomarFoto.setText("Tomar fotografía a < 1 Mpx");
		}
		else{
			btnTomarFoto.setText("Tomar fotografía a "+(((Variables.tamResolucion.width*Variables.tamResolucion.height)/1024000)+1)+" Mpx");
		}
		btnTomarFoto.setOnClickListener(ivIniciarPres);
	    if (activado == false){
	    	sonido("sonido");
	    	Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
	    	v.vibrate(2000);
	    	activado = true;
	    }
	}
	
	
	private void mensaje(String titulo, String msj){
        new AlertDialog.Builder(Principal.this)
        .setIcon(android.R.drawable.ic_dialog_alert)
        .setTitle(titulo)
        .setMessage(msj)
        .setPositiveButton("Aceptar", new DialogInterface.OnClickListener() {
        	public void onClick(DialogInterface dialog, int whichButton) {
        		activarGPS();
        		setResult(RESULT_OK);
        	}
        })
        .show();   
	}
	
	private void mensajeEnviaArchivos(String titulo, String msj){
        new AlertDialog.Builder(Principal.this)
        .setTitle(titulo)
        .setMessage(msj)
        .setPositiveButton("Aceptar", new DialogInterface.OnClickListener() {
        	public void onClick(DialogInterface dialog, int whichButton) {
    			verificaInternetBD();
        		//setResult(RESULT_OK);
        	}
        })
        .setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
			public void onClick(DialogInterface dialog, int which) {
				setResult(RESULT_CANCELED);
			}
		})
        .show();   
	}

	private void enviaImagenBD(){
		String SOAP_ACTION="capeconnect:servicios:serviciosPortType#recibeImagen"; 
		String METHOD_NAME = "recibeImagen";
		String NAMESPACE = "http://www.your-company.com/servicios.wsdl";
		BD bd = new BD(this);
		
		SoapSerializationEnvelope envelope;
		HttpTransportSE aht;
		Imagen imagenes = new Imagen();
			
		try{
			request = new SoapObject(NAMESPACE, METHOD_NAME); 
			imagenes = bd.obtieneImagen();
			File verifica = new File(Variables.ruta+imagenes.getNombreImagen());
			if (verifica.exists()){
				request.addProperty("nombreImagen", imagenes.getNombreImagen());
				new EnviaImagenHttp("http://"+Variables.HOST+"/pags/recibeimagen.php", imagenes.getNombreImagen(),Variables.ruta+imagenes.getNombreImagen()).execute();
				//enviaImagenHttp(imagenes.getNombreImagen());
				bd.borraImagen(imagenes.getNombreImagen());
				request.addProperty("latitud", Double.toString(imagenes.getLatitud()));
				request.addProperty("longitud", Double.toString(imagenes.getLongitud()));
				request.addProperty("comentario", imagenes.getComentario());						
				request.addProperty("idCategoria", Integer.toString(imagenes.getIdCategoria()));
				request.addProperty("idEstado", Integer.toString(imagenes.getIdEstado()));				
				request.addProperty("calificacion", Float.toString(imagenes.getCalificacion()));
				request.addProperty("correoUsuario",imagenes.getCorreoUsuario());				
				envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
				
				envelope.dotNet = false;
										
				envelope.setOutputSoapObject(request);
				//envelope.addMapping(NAMESPACE, "contenido", new ContenidoArray().getClass());

				aht = new HttpTransportSE(URL);

				aht.call(SOAP_ACTION, envelope);
				
				SoapObject result =  (SoapObject) envelope.bodyIn;
                SoapPrimitive spResul = (SoapPrimitive) result.getProperty("result");
                
                
				Log.i("resultado",spResul.toString());
				request = null;
				imagenes = null;
				System.gc();
				
	
				Toast.makeText(Principal.this, "¡Imágenes guardadas en el dispositivo enviadas!", Toast.LENGTH_LONG).show();
			}
			else{
				Toast.makeText(Principal.this, "¡No se encuentra el archivo! "+imagenes.getNombreImagen(), Toast.LENGTH_LONG).show();
				bd.borraImagen(imagenes.getNombreImagen());
			}
		}
	    catch (IOException e) {
			e.printStackTrace();
			
		}catch (XmlPullParserException e) {
			e.printStackTrace();
		}

		finally{
			bd.close();
		}
			
			
	}
	
	private void enviaImagenHttp(String nombreImagen){
		try {
		    // Set your file path here
		    //FileInputStream fstrm = new FileInputStream(Variables.ruta+nombreImagen);

		    // Set your server page url (and the file title/description)
		    /*
		   EnviaArchivoHttp enviaArchivo = new EnviaArchivoHttp ("http://"+Variables.HOST+"/pags/recibeimagen.php", nombreImagen);

		    enviaArchivo.envia(fstrm);
		    */
		   
		    //fstrm.close();
		   /* 
		  } catch (FileNotFoundException e) {
		    // Error: File not found
		     * 
		     */
		  } catch (Exception e) {
			e.printStackTrace();
		}		
	}
	
	private void insertaCategoriasInternet(){
		String SOAP_ACTION="capeconnect:servicios:serviciosPortType#obtieneCategorias"; 
		String METHOD_NAME = "obtieneCategorias";
		String NAMESPACE = "http://www.your-company.com/servicios.wsdl";
		SoapSerializationEnvelope envelope;
        HttpTransportSE httpt;
        BD bd = new BD(this);
     
        try{
            SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
               
        httpt = new HttpTransportSE(URL);
        envelope = new SoapSerializationEnvelope( SoapEnvelope.VER11 );
        envelope.dotNet = false;
        envelope.setOutputSoapObject(request);
        httpt.call(SOAP_ACTION, envelope);
        SoapObject result2 =  (SoapObject) envelope.getResponse();

        for(int cont=0; cont< result2.getPropertyCount(); cont ++){
        	SoapObject resultados = (SoapObject) result2.getProperty(cont);
        	//primitivas
        	SoapPrimitive idCategoria = (SoapPrimitive) resultados.getProperty("idCategoria");
        	SoapPrimitive nombreCategoria = (SoapPrimitive) resultados.getProperty("nombreCategoria");
        	bd.insertaCategoria(Integer.parseInt(idCategoria.toString()), nombreCategoria.toString());
        }
     }
     catch(Exception err){
    	 
     }
     bd.close();
	}

	 OnCompletionListener completionList = new OnCompletionListener() {
         
         public void onCompletion(MediaPlayer mp) {
                 mediaPlayerSonido.release();
         }
 };
 
 
	private void sonido(String sSonido){

        int resIDSonido = getResources().getIdentifier(sSonido, "raw", getPackageName());
        if (mediaPlayerSonido != null){
                mediaPlayerSonido.release();
        }
        mediaPlayerSonido = null;
        mediaPlayerSonido = new MediaPlayer();
        mediaPlayerSonido = MediaPlayer.create(Principal.this, resIDSonido);
        mediaPlayerSonido.start();
        mediaPlayerSonido.setLooping(false);
        mediaPlayerSonido.setOnCompletionListener(completionList);
	}
	
	private int verificaCantidad(){
		BD bd = new BD(this);
		int cant = bd.cuentaRegImagenes();
		bd.close();
		return cant;


	}
	
	private void mensajeUsuarioInternet(String titulo, String msj){
        new AlertDialog.Builder(Principal.this)
        .setTitle(titulo)
        .setMessage(msj)
        .setCancelable(false)
        .setPositiveButton("Como usuario", new DialogInterface.OnClickListener() {
        	public void onClick(DialogInterface dialog, int whichButton) {
        	Intent intent = new Intent();
    		intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        	intent.putExtra("origen", Variables.INICIO_SESION);
			intent.setClass(Principal.this,InicioSesion.class);
			startActivity(intent);
        	}
        })
        .setNegativeButton("Invitado", new DialogInterface.OnClickListener() {
			public void onClick(DialogInterface dialog, int which) {
       		Intent intent = new Intent();
    		intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
			intent.putExtra("correoUsuario", Variables.correoInvitado);
			intent.putExtra("nombreUsuario", Variables.nombreInvitado);
			intent.putExtra("origen", Variables.INICIO_INVITADO);
			intent.setClass(Principal.this,ObtieneImgCam.class);
			startActivity(intent);				
			}
		})
		
        .show();   
	}
	
	private void mensajeUsuarioSinInternet(String titulo, String msj){
        new AlertDialog.Builder(Principal.this)
        .setTitle(titulo)
        .setMessage(msj)
        .setCancelable(false)
        .setPositiveButton("Aceptar", new DialogInterface.OnClickListener() {
        	public void onClick(DialogInterface dialog, int whichButton) {
        	Intent intent = new Intent();
    		intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        	intent.putExtra("origen", Variables.INICIO_SESION);
			intent.setClass(Principal.this,InicioSesion.class);
			startActivity(intent);
        	}
        })
        .setNegativeButton("Invitado", new DialogInterface.OnClickListener() {
			public void onClick(DialogInterface dialog, int which) {
       		Intent intent = new Intent();
    		intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
			intent.setClass(Principal.this,ObtieneImgCam.class);
			intent.putExtra("correoUsuario", Variables.correoInvitado);
			intent.putExtra("origen", Variables.INICIO_INVITADO);
			startActivity(intent);				
			}
		})
		
        .show();   
	}
	
	
	public void dialogoSinInternet(Context context){
		LayoutInflater li = LayoutInflater.from(context);
		View promptsView = li.inflate(R.layout.dialogousuario, null);

		final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
				context);

		// set prompts.xml to alertdialog builder
		alertDialogBuilder.setView(promptsView);

		final EditText etCorreo = (EditText) promptsView.findViewById(R.id.etCorreoUsuarioDialog);

		// set dialog message
		alertDialogBuilder
			.setCancelable(false)
			.setTitle("No hay conexión a Internet, para guardar su correo por sesión, capturelo en la configuración de la aplicación")
			.setIcon(android.R.drawable.ic_dialog_alert)
			.setPositiveButton("Aceptar",new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface d, int which) {
                    //Do nothing here. We override the onclick
                }
			}

			  )
			.setNegativeButton("Invitado",
			  new DialogInterface.OnClickListener() {
			    public void onClick(DialogInterface dialog,int id) {
		       		Intent intent = new Intent();
		    		intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
					intent.setClass(Principal.this,ObtieneImgCam.class);
					intent.putExtra("correoUsuario", Variables.correoInvitado);
					intent.putExtra("nombreUsuario", Variables.nombreInvitado);					
					intent.putExtra("origen", Variables.INICIO_INVITADO);
					startActivity(intent);
			    }
			  });

		// create alert dialog
		final AlertDialog alertDialog = alertDialogBuilder.create();
		alertDialog.setOnShowListener(new DialogInterface.OnShowListener() {

			public void onShow(DialogInterface dialog) {
				Button btn = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE);
				btn.setOnClickListener(new View.OnClickListener() {
					public void onClick(View v) {
						if (etCorreo.length() != 0 && validarCorreo(etCorreo.getText().toString()) == true){
				       		Intent intent = new Intent();
				    		intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
							intent.setClass(Principal.this,ObtieneImgCam.class);
							intent.putExtra("correoUsuario", etCorreo.getText().toString());
							intent.putExtra("origen", Variables.INICIO_SESION);
							alertDialog.dismiss();
							startActivity(intent);						
						}
						else{
							Toast.makeText(Principal.this, "Captura una dirección de correo válida", Toast.LENGTH_LONG).show();
						}

					}
				});
			}
		});
		// show it
		alertDialog.show();
		


		
	}
	/*
	public void dialogoSinInternet(Context context){
		LayoutInflater li = LayoutInflater.from(context);
		View promptsView = li.inflate(R.layout.dialogousuario, null);

		final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
				context);

		// set prompts.xml to alertdialog builder
		alertDialogBuilder.setView(promptsView);

		final EditText etCorreo = (EditText) promptsView.findViewById(R.id.etCorreoUsuarioDialog);

		// set dialog message
		alertDialogBuilder
			.setCancelable(false)
			.setTitle("No hay conexión a Internet")
			.setIcon(android.R.drawable.ic_dialog_alert)
			.setPositiveButton("Aceptar",
			  new DialogInterface.OnClickListener() {
			    public void onClick(DialogInterface dialog,int id) {
			    	if (etCorreo.length() !=0 && validarCorreo(etCorreo.getText().toString()) == true){
			       		Intent intent = new Intent();
			    		intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
						intent.putExtra("correoUsuario", etCorreo.getText().toString());
						intent.putExtra("origen", Variables.INICIO_SESION);
						intent.setClass(Principal.this,ObtieneImgCam.class);
						startActivity(intent);	
			    	}
			    	else{
			    		Toast.makeText(Principal.this, "Captura una dirección de correo válida", Toast.LENGTH_LONG).show();
			    	}
				// get user input and set it to result
				// edit text
			    }
			  })
			.setNegativeButton("Invitado",
			  new DialogInterface.OnClickListener() {
			    public void onClick(DialogInterface dialog,int id) {
		       		Intent intent = new Intent();
		    		intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
					intent.setClass(Principal.this,ObtieneImgCam.class);
					intent.putExtra("correoUsuario", "sisfotosturisticas@gmail.com");
					intent.putExtra("origen", Variables.INICIO_INVITADO);
					startActivity(intent);
			    }
			  });

		// create alert dialog
		AlertDialog alertDialog = alertDialogBuilder.create();
		
		// show it
		alertDialog.show();
		


		
	}
	*/
	private boolean validarCorreo(String correo){
	    String  expression="^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";  
	       CharSequence inputStr = correo;  
	       Pattern pattern = Pattern.compile(expression,Pattern.CASE_INSENSITIVE);  
	       Matcher matcher = pattern.matcher(inputStr);  
	       return matcher.matches();
	}
	
	private void enviaCorreo(String correoUsuario,String correoContacto, String nombreImagen){
	    String URL = "http://"+Variables.HOST+"/pags/servicios.php";
		String SOAP_ACTION="capeconnect:servicios:serviciosPortType#enviaCorreo"; 
		String METHOD_NAME = "enviaCorreo";
		String NAMESPACE = "http://www.your-company.com/servicios.wsdl";
		
		SoapSerializationEnvelope envelope;
        HttpTransportSE httpt;
        
        try{
            SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
               
	        httpt = new HttpTransportSE(URL);
	        envelope = new SoapSerializationEnvelope( SoapEnvelope.VER11 );
	        envelope.dotNet = false;
	        request.addProperty("nombreImagen", nombreImagen);
	        request.addProperty("correoContacto", correoContacto);
	        request.addProperty("correoUsuario", correoUsuario);
	        request.addProperty("host", Variables.HOST);
	        
	        envelope.setOutputSoapObject(request);
	        httpt.call(SOAP_ACTION, envelope);
	        /*
	        SoapObject result =  (SoapObject) envelope.bodyIn;
            SoapPrimitive spResul = (SoapPrimitive) result.getProperty("result");
            Log.i("correo", spResul.toString());
            */
        }
        	catch(Exception err){
        		Log.e("Error en enviar correo", err.toString());
        	}	
	}
		
}


